package com.sc.web.gwt.server.service;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.sc.web.gwt.client.service.UserAccountDataManagementService;
import com.sc.web.gwt.server.persistence.UserAccountPersistence;
import com.sc.web.gwt.server.util.AccountCodeGenerator;
import com.sc.web.gwt.shared.model.UserAccount;

import java.util.List;

public class UserAccountDataManagementServiceImpl extends RemoteServiceServlet implements UserAccountDataManagementService {
    UserAccountPersistence userAccountPersistence = new UserAccountPersistence();

    public boolean changeState(int userAccountId) {
        return userAccountPersistence.suspendUserAccount(userAccountId);
    }

    public UserAccount getUserAccountData(int userAccountId) {
        return userAccountPersistence.getUserAccountData(userAccountId);
    }

    public UserAccount createNewUserAccount() {
        UserAccount userAccount = new UserAccount();

        userAccount.setState("Inactivated");
        userAccount.setStateId(3);
        userAccount.setAccountCode(AccountCodeGenerator.getAccountCode());
        userAccount.setSeed("0");
        userAccount.setEvent("0");
        userAccount.setUserAccountId(-1);

        return userAccount;
    }

    public boolean saveOrUpdateUserAccountData(UserAccount userAccount) {
        if (userAccount.getUserAccountId() != -1)
            return userAccountPersistence.updateUserAccount(userAccount);
        else {
            return userAccountPersistence.insertUserAccount(userAccount);
        }
    }

    public List<UserAccount> getAllUserAccounts() {
        return userAccountPersistence.getAllUserAccounts(Integer.parseInt(getThreadLocalRequest().getSession().getAttribute("userId").toString()));
    }

    public List<UserAccount> searchUserAccounts(String searchText, int searchIndex) {
        return userAccountPersistence.searchUserAccounts(searchText, searchIndex, Integer.parseInt(getThreadLocalRequest().getSession().getAttribute("userId").toString()));
    }
}